package com.kingmed.kmss.common.bo.bpmn;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.kingmed.kmss.common.annotation.DictAnnotation;
import com.kingmed.kmss.common.constant.customer.cdm.CustConstants;
import com.kingmed.kmss.common.constant.marketing.MktConstants;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Getter
@Setter
@ApiModel(value = "移动端返回卡片类型对象", description = "移动端返回卡片类型对象")
public class AppFlowCard implements Serializable {
    private static final long serialVersionUID = 1L;

    private String businessId;

    @ApiModelProperty("公共 - 处理人")
    private String approvedByName;

    @ApiModelProperty("公共 - 审批时间")
    private Date approveTime;

    @ApiModelProperty("审批状态（0=草稿，1=审批中，2=预留，3=审批驳回，4=审批通过)")
    private Integer auditStatus;

    /********************** 合同 *********************/
    @ApiModelProperty("合同 - 基础结算扣率")
    private BigDecimal basicSettlementRate;

    @ApiModelProperty("合同-价格是否变更(0 - 未变更，1 - 已变更)")
    private Integer priceChange = 0;

    @ApiModelProperty("合同-合同全称")
    private String contractFullName;

    @ApiModelProperty("合同-合同编号")
    private String contractNum;

    @ApiModelProperty("合同-合同签订子公司(Kmcs系统编码)")
    private String affiliateSubCompCode;

    @ApiModelProperty("合同-合同签订子公司名称")
    private String affiliateSubCompName;

    @ApiModelProperty("合同-业务类型")
    private String businessType;
    @ApiModelProperty("合同-业务类型")
    private String businessTypeValue;

    @ApiModelProperty("合同-合同开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractStartDate;

    @ApiModelProperty("合同-合同结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractEndDate;

    /********************** 组织客户 *********************/
    @ApiModelProperty("组织客户-客户编码")
    private String customerCode;

    @ApiModelProperty("组织客户-标准客户名称")
    private String customerName;

    @ApiModelProperty("组织客户-客户群")
    private String customerGroup;

    @ApiModelProperty("组织客户-客户类型")
    private String customerBusType;

    @ApiModelProperty("组织客户-客户类型名称")
    private String custBizType;

    @ApiModelProperty("组织客户-医疗机构等级")
    private String hospitalGrade;

    @ApiModelProperty("组织客户-所有制（1=公立，2=非公立）")
    private String ownership;

    /********************** 物理科室 *********************/
    @ApiModelProperty("物理科室-科室客户名称")
    private String deptName;

    @ApiModelProperty("物理科室-所属医院名称")
    private String customerHospitalName;

    @ApiModelProperty("物理科室-客户类型名称")
    private String customerBusTypeName;

    @ApiModelProperty("物理科室-科室类别名称")
    private String deptTypeName;

    /********************** 专家合作 *********************/
    @ApiModelProperty("专家合作-专家姓名")
    private String expertName;

    @ApiModelProperty("专家合作-活动名称")
    private String activityName;

    @ApiModelProperty("专家合作-支持开始时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date supportTimeStart;

    @ApiModelProperty("专家合作-支持结束时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date supportTimeEnd;

    @ApiModelProperty("专家合作-合作类型，字典：marketing_activity_expert_coop_type")
    @DictAnnotation(dicTypeCode = MktConstants.SysDictCode.MARKETING_ACTIVITY_EXPERT_COOP_TYPE, fillText = "cooperationTypeName")
    private String cooperationType;

    @ApiModelProperty("专家合作-合作类型，字典：marketing_activity_expert_coop_type")
    private String cooperationTypeName;

    /********************** 专家档案 *********************/
    @ApiModelProperty("专家档案-专家姓名（医生/个人姓名）")
    private String ermExpertName;

    @ApiModelProperty("专家档案-所属客户id")
    private Long ermCustomerId;

    @ApiModelProperty("专家档案-所属客户姓名")
    private String ermCustomerName;

    @ApiModelProperty("专家档案-所属科室id")
    private Long ermDeptId;

    @ApiModelProperty("专家档案-所属科室名称")
    private String ermDeptName;

    @DictAnnotation(dicTypeCode = CustConstants.ERM_MAJOR_TYPE, fillText = "majorTypeName")
    @ApiModelProperty("专家档案-专家专业类型(1=临床学科型,2=技术平台型,3=管理型)")
    private String majorType;

    @ApiModelProperty("专家档案-专家专业类型名称")
    private String majorTypeName;

    /********************** 投标标书 *********************/
    @ApiModelProperty("投标标书-标书名称")
    private String bidName;

    @ApiModelProperty("投标标书-开标时间")
    private Date startTime;

    @ApiModelProperty("投标标书-投标类型(1-公开招标;2-院内招标)")
    private Integer bidType;

    @ApiModelProperty("投标标书-业务模式（1-合作共建、2-外包检测）")
    private Integer bizModelType;

    /********************** 投标资料 *********************/

    @ApiModelProperty("投标资料-所属子/孙公司ID")
    private Long bizSubId;

    @ApiModelProperty("投标资料-资料申请方")
    private String bizSubName;

    @ApiModelProperty("投标资料-资料申请人")
    private String createBy;

    @ApiModelProperty("投标资料-商机名称")
    private String oppName;

    /********************** 营销活动 *********************/
    @ApiModelProperty("营销活动-活动名称")
    private String actName;

    @ApiModelProperty("营销活动-活动等级，字典：marketing_activity_grade")
    private String actGrade;

    @ApiModelProperty("营销活动-活动开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date actStartTime;

    @ApiModelProperty("营销活动-活动结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date actEndTime;

    @ApiModelProperty("营销活动-预估费用")
    private BigDecimal estimateCost;

    /********************** 促销活动 *********************/
    @ApiModelProperty("促销活动-促销编号")
    private String promotionNum;

    @ApiModelProperty("促销活动-促销名称")
    private String promotionName;

    @ApiModelProperty("促销活动-子公司编码")
    private String subCompanyCode;

    @ApiModelProperty("促销活动-子公司名称")
    private String subCompanyName;

    @ApiModelProperty("促销活动-申请开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date requestStartDate;

    @ApiModelProperty("促销活动-申请结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date requestEndDate;

    /********************** 合并开票 *********************/
    @ApiModelProperty("合并开票-客户名称")
    private String invoiceCustomerName;

    @ApiModelProperty("合并开票-合同编号")
    private String invoiceContractNum;

    @ApiModelProperty("合并开票-合同名称")
    private String invoiceContractName;

    @ApiModelProperty("合并开票-合同创建人（合同主责业务员）名称")
    private String contractCreatedUserName;

}
